<?php
/*
Описание: Функции для работы со страницей. Позволяет создавай элементы страницы с определенной версткой.
Автор: Andrew Shapovalov
Созданно: 20.08.2009
Обновленно: 16.02.2010
*/

/*Создает галерею картинок с эффектом CoverFlow как на iPhone.
ПЕРАМЕТРЫ:
	$params - массив строчек для галлереи, которые содержат ссылки на картинки, их название, описание;
	$isDraw - Выводить или вернуть html-код.
РЕЗУЛЬТАТ:
	Выводит или возвращает html-код галереи.*/
function shav_createImageGallery_flow($params = array(), $isDraw = false)
{
	if(empty($params))
		return MSG_ARRAYS_0001;

	$content = '<div id="MooFlow">';
	foreach($params as $rec)
	{
		$content .= '<a href="'.$rec['url'].'" rel="link"><img src="'.$rec['image'].'" title="'.$rec['title'].'" alt="'.$rec['desc'].'" /></a>';
	}
	$content .= '</div>';

	if($isDraw == true)
		echo $content;
	else
		return $content;
}

/*Создает простую галерею с прокруткой.
ПАРАМЕТРЫ:
	$params - массив параметров для создания галереи;
	$isDraw - Выводить или вернуть html-код.
РЕЗУЛЬТАТ:
	выводит или возвращает html-код.*/
function shav_createSimpleGallery($params = array('id_galery' => 'mygallery', 'count_imgInPanel' => 1, 'data_image' => array()), $isDraw = false)
{
	if(empty($params))
		return MSG_ARRAYS_0001;

	$content  = '<div id="'.$params['id_galery'].'" class="stepcarousel"><div class="belt">';

	//Расчитываем количество панелей
	$count_of_panel = (int)(count($params['data_image']) / (int)$params['count_imgInPanel']);
	if($count_of_panel * (int)$params['count_imgInPanel'] < count($params['data_image']))
		$count_of_panel++;

	$data_image = $params['data_image'];

	$i = 0; $j = 0;
	while($i < $count_of_panel)
	{
		$content .= '<div class="panel">';
		$k = -1;
		while($j < (int)(count($params['data_image'])))
		{
			$content .= '<a href="'.$data_image[$j]['url'].'" class="thickbox"><img src="'.$data_image[$j]['url'].'" /></a>';

			$k++;
			$j++;

			if($k == (int)$params['count_imgInPanel'] - 1)
				break;
		}
		$content .= '</div>';
		$i++;
	}
	$content .= '</div></div>';

	if($isDraw == true)
		echo $content;
	else
		return $content;
}

/*Создает текстовый слайдер, в котором прокручивается текст или картинки.
ПАРАМЕТРЫ:
	$params - массив конфигурации;
	$isDraw - выводить или вернуть html-код.
РЕЗУЛЬТАТ:
	Выводит или возвращает html-код.*/
function shav_createTextSlider($params = array('id_text' => 'news', 'data_type' => 'text', 'data_texts' => array(array('url' => '', 'text' => ''))), $isDraw = false)
{
	if(empty($params))
		return MSG_ARRAYS_0001;

	$content  = '<ul id="'.$params['id_text'].'">';
	foreach($params['data_texts'] as $rec)
	{
		if($params['data_type'] == 'text')
			$content .= '<li><a href="'.$rec['url'].'">'.$rec['text'].'</a></li>';
		elseif($params['data_type'] == 'image')
			$content .= '<li><a href="'.$rec['url'].'"><img src="'.$rec['text'].'" /></a></li>';
	}
	$content .= '</ul>';

	if($isDraw == true)
		echo $content;
	else
		return $content;
}

/*Создает панель для данных
ПАРАМЕТРЫ:
	$id_component - идентификатор компонента;
	$title - Заголовок панели;
	$text - Содержимое панели;
	$isDraw - Выводить или вернуть html-код панели.
РЕЗУЛЬТАТ:
	Выводит или возвращает html-код панели.*/
function shav_createSideBar($id_component, $title = '', $text = '', $isDraw = false)
{
	$content  = '<div id="'.$id_component.'">';
	$content .= '	<h1>'.$title.'</h1>';
	$content .= '	<div class="toggle">'.$text.'</div>';
	$content .= '</div>';

	if($isDraw == true)
		echo $content;
	else
		return $content;
}

/*Создает форму авторизации.
ПАРАМЕТРЫ:
	$params - текст для полей;
	$isDraw - выводить или вернуть html-код формы.
РЕЗУЛЬТАТ:
	Выводит или возвращает html-код формы авторизации.*/
function shav_createLoginForm($params = array('login' => 'You login:', 'pass' => 'You password:', 'reg' => 'Registred', 'action_scrp' => '', 'reg_scrp' => '/register.php', 'button' => 'Sing in'), $isDraw = false)
{
	if(empty($params))
		return MSG_ARRAYS_0001;

	$content  = '<form class="login_frm" method="POST" action="'.$params['action_scrp'].'">';
	$content .= '	<table id="auth">';
	$content .= '		<tr>';
	$content .= '			<td><label for="login">'.$params['login'].'</label></td>';
	$content .= '			<td><input type="text" name="login" size="14" id="login" value="" /></td>';
	$content .= '		</tr>';
	$content .= '		<tr>';
	$content .= '			<td><label for="pass">'.$params['pass'].'</label></td>';
	$content .= '			<td><input type="password" name="pass" size="14" id="pass" value="" /></td>';
	$content .= '		</tr>';
	$content .= '		<tr>';
	$content .= '			<td><a href="'.$params['reg_scrp'].'">'.$params['reg'].'</a></td>';
	$content .= '			<td><div align="right"><input type="submit" name="signin" id="signin" value="'.$params['button'].'" /></div></td>';
	$content .= '		</tr>';
	$content .= '	</table>';
	$content .= '</form>';

	if($isDraw == true)
		echo $content;
	else
		return $content;
}

/*Создает модальное окно используя simpleModal на jQuery
ПАРАМЕТРЫ:
	$idWindow - Идентификатор окна, используется в /js/simplemodal/config.js;
	$linkTitle - Заголовок ссылки на создаваемое окно;
	$titleWnd - Заголовок окна при его отображение;
	$text - содержимое окна;
	$isDraw - Выводить или нет html-код.
РЕЗУЛЬТАТ:
	Выводит или возвращает html-код окна.*/
function shav_createModalWindow($idWindow, $linkTitle = 'Link title', $titleWnd = 'Window Title', $text = 'Window html text', $isDraw = false)
{
	$content  = '<div id="'.$idWindow.'"><a href="#" class="basic">'.$linkTitle.'</a></div>';
	$content .= '<div id="'.$idWindow.'-content"><div class="window_header"><h1>'.$titleWnd.'</h1></div><div class="window_content">'.$text.'</div></div>';

	if($isDraw == true)
		echo $content;
	else
		return $content;
}

/*Создает форму в HTML с табличной версткой
ПАРАМЕТРЫ:
	$params - массив параметров, описывает структуру компонентов и тип формы;
	$isDraw - выводить или не форму.
РЕЗУЛЬТАТ:
	Выводит или возвращает html-код формы.*/
function shav_createHTMLForm($params = array('method' => 'POST', 'action_scrp' => '', 'enctype' => '', 'style_class' => 'myForm', 'title' => 'New form', 'content_frm' => array(array('name' => 'field1', 'disable' => 'false', 'label_align' => 'left', 'type' => 'text', 'label' => 'field1', 'size' => '25', 'value' => 'Some text here'), array('name' => 'send', 'label_align' => 'left', 'type' => 'submit', 'label' => '', 'size' => '25', 'value' => 'Send string'))), $isDraw = false)
{
	if(empty($params))
		return MSG_ARRAYS_0001;

	$content  = '<form class="'.$params['style_class'].'" method="'.$params['method'].'" action="'.$params['action_scrp'].'" enctype="'.$params['enctype'].'">';
	$content .= '<table><tr><td colspan="2"><h1>'.$params['title'].'</h1></td></tr>';
	foreach($params['content_frm'] as $rec)
	{
		$disabled = '';
		if($rec['disable'] == 'true')
			$disabled = 'disabled';
		$content .= '<tr>';
		if($rec['type'] != 'submit' && $rec['type'] != 'list' && $rec['type'] != 'checkbox' && $rec['type'] != 'date' && $rec['type'] != 'textarea' && $rec['type'] != 'uploads')
		{
			$content .= '<td align="'.$rec['label_align'].'"><label for="'.$rec['name'].'">'.$rec['label'].'</label></td>';
			$content .= '<td><input type="'.$rec['type'].'" '.$disabled.' name="'.$rec['name'].'" id="'.$rec['name'].'" size="'.$rec['size'].'" value="'.$rec['value'].'" /></td>';
		}
		elseif($rec['type'] == 'list')
		{
			$content .= '<td align="'.$rec['label_align'].'"><label for="'.$rec['name'].'">'.$rec['label'].'</label></td>';
			$content .= '<td>'.$rec['value'].'</td>';
		}
		elseif($rec['type'] == 'submit')
		{
			$reg_url = '';
			if($rec['label'] != '' && substr($rec['label'], 0, 2) == '<a')
				$reg_url = $rec['label'];

			$content .= '<td colspan="2" align="'.$rec['label_align'].'">'.$reg_url.'&nbsp;&nbsp;<input type="'.$rec['type'].'" '.$disabled.' name="'.$rec['name'].'" id="'.$rec['name'].'" size="'.$rec['size'].'" value="'.$rec['value'].'" /></td>';
		}
		elseif($rec['type'] == 'checkbox')
		{
			$checked = '';
			if($rec['value'] == 1)
				$checked = 'checked';

			$content .= '<td align="'.$rec['label_align'].'"><label for="'.$rec['name'].'">'.$rec['label'].'</label></td>';
			$content .= '<td><input type="'.$rec['type'].'" '.$checked.$disabled.' name="'.$rec['name'].'" id="'.$rec['name'].'" size="'.$rec['size'].'" value="'.$rec['value'].'" /></td>';
		}
		elseif($rec['type'] == 'date')
		{
			$calendarField = shav_createCalendarFieldRus($rec['name'], $rec['size'], $rec['value']);
			$content .= '<td align="'.$rec['label_align'].'"><label for="'.$rec['name'].'">'.$rec['label'].'</label></td>';
			$content .= '<td>'.$calendarField.'</td>';
		}
		elseif($rec['type'] == 'textarea')
		{
			$content .= '<tr><td colspan="2" align="'.$rec['label_align'].'"><label for="'.$rec['name'].'">'.$rec['label'].'</label></td></tr>';
			$content .= '<tr><td colspan="2"><textarea id="'.$rec['name'].'" name="'.$rec['name'].'" cols="'.$rec['size']['cols'].'" rows="'.$rec['size']['rows'].'">'.$rec['value'].'</textarea></td>';
		}
		elseif($rec['type'] == 'uploads')
		{
			$content .= '<td colspan="2">'.$rec['value'].'</td>';
		}
		

		$content .= '</tr>';
	}
	$content .= '</table></form>';

	if($isDraw == true)
		echo $content;
	else
		return $content;
}

/*Заменяет вставленные в текст ($html_text) теги на их значения.
ПАРАМЕТРЫ:
	$tags - Массив тегов и значений такого вида: array('<тег>'=>'<значение>');
	$html_text - текст которые нужно преобразовать;
	$isDraw - выводить или вернуть html-код текста.
РЕЗУЛЬТАТ:
	Выводит или возвращает html-код текста.*/
function shav_createContentsByTags($tags, $html_text, $isDraw = false)
{
	if(!is_array($tags))
	{
		if($isDraw == true)
			echo ERROR_ARRAYS_0100;
		else
			return ERROR_ARRAYS_0100;
	}

	foreach($tags as $key=>$value)
	{
		$html_text = str_replace($key, $value, $html_text);
	}

	if($isDraw == true)
		echo $html_text;
	else
		return $html_text;
}

/*Создает меню ввиде грамошки
ПАРАМЕТРЫ:
	$class - Идентификатор класс элемента, который нужно превратить в меню "Гармошка";
	$content_arr - массив данных для вывода;
	$isDraw - Выводить или вернуть HTML-код.
РЕЗУЛЬТАТ:
	Выводит или возвращает HTML-код меню.*/
function shav_createMenuGarmoshka($class, $content_arr = array(array('header'=>'', 'text'=>'')), $isDraw = false)
{
	$javascript = '<script type="text/javascript">
	$(document).ready(function(){
		$(".'.$class.' h3:first").addClass("active");
		$(".'.$class.' p:not(:first)").hide();

		$(".'.$class.' h3").click(function(){
			$(this).next("p").slideToggle("slow")
			.siblings("p:visible").slideUp("slow");

			$(this).toggleClass("active");
			$(this).siblings("h3").removeClass("active");
		});
	});
</script>';

	$content = $javascript.'<div class="'.$class.'">';
	foreach($content_arr as $rec)
	{
		$content .= '<h3>'.$rec['header'].'</h3><p>'.$rec['content'].'</p>';
	}
	$content .= '</div>';

	if($isDraw == true)
		echo $content;
	else
		return $content;
}

/*Функция для показа содержимого компонента в виде сайдбара.
ПАРАМТЕРЫ:
	$idComponent - идентификатор компонента, который прячется или опказывается;
	$params - массив параметров для создания сайдбара;
	$isDraw - вывести на экран или вернуть html-код.
РЕЗУЛЬТАТ:
	Выводит или возвращает HTML-код текста.*/
function shav_createSideBarPanel($idComponent, $params=array(array('header' => 'Some header for text!', 'text' => 'Some hide text')), $isDraw = false)
{
	$content = '<div id="'.$idComponent.'">';
	foreach($params as $rec)
	{
		$content .= '<h1>'.$rec['header'].'</h1><div class="toggle">'.$rec['text'].'</div>';
	}
	$content .= '</div>';

	if($isDraw == true)
		echo $content;
	else
		return $content;
}

/*Создает кнопку для загрузки файлов на сервер используя определенный PHP-скрипт.
ПАРАМЕТРЫ:
	$text_link - текст для кнопки загрузки;
	$showImage - показывать загруженные картинки или нет;
	$isDraw - выводить или вернуть html-код компонента.
РЕЗУЛЬТАТ:
	Выводит или возвращает html-код компонента для загрузки файлов.*/
function shav_createUploadFileLink($text_link, $showImage = true, $isDraw = false)
{
	$content  = '<div id="upload" ><span>'.$text_link.'<span></div><span id="status" ></span>';
	if($showImage == true)
		$content .= '<ul id="files" ></ul>';

	if($isDraw == true)
		echo $content;
	else
		return $content;
}

/*Создает слайдер для проверки на бота (Заменяет капчу)
ПАРАМЕТРЫ:
	$idSlider - название компонента, в котором будет находится слайдер;
	$idStatusElement - идентификатор элемента формы, куда будет сохранено значение проверки;
	$textREsult - текс результата успешной проверки;
	$isDraw - Выводить или вернуть HTML-код слайдера.
РЕЗУЛЬТАТ:
	Показывает слайдер для проверки "ботов"*/
function shav_createSlider($idSlider, $idStatusElement, $message = 'turn off the lights!', $textREsult = '1', $isDraw = false)
{
	$content = '<script type="text/javascript">
	$(function(){
		var s2 = new Slider("'.$idSlider.'",{
			message: "'.$message.'",
			color: "red",
			handler: function(){
				$("input#'.$idStatusElement.'").val("'.$textREsult.'");
			}
		});
		s2.init();
	});
	</script>';
	$content .= '<div id="slider2" width="200px"><div class="track"><div class="track-left"></div><div class="track-right"></div><div class="track-center"><div class="track-message">turn off the lights!</div></div><div style="background-position: 0pt 39px;" class="handle"></div></div></div>';
	
	if($isDraw == true)
		echo $content;
	else
		return $content;
}


/*Создает поле формы для ввода даты
ПАРАМТЕРЫ:
	$idField - идентификатор поля формы;
	$value - значение поля формы;
	$isDraw - Выводить или вернять html-код.
РЕЗУЛЬТАТ:
	Поле формы с календарем.*/
function shav_createCalendarFieldRus($idField, $value = '', $size = 25,  $isDraw = false)
{
	$content = '<script type="text/javascript">
		$(function() {
			$("#'.$idField.'").datepicker({ dateFormat: \'dd.mm.yy\', dayNamesMin: [\'Вс\', \'Пн\', \'Вт\', \'Ср\', \'Чт\', \'Пт\', \'Сб\'], firstDay: 1, monthNames: [\'Январь\',\'Февраль\',\'Март\',\'Апрель\',\'Май\',\'Июнь\',\'Июль\',\'Август\',\'Сентябрь\',\'Октябрь\',\'Ноябрь\',\'Декабрь\'] });
		
		});
	</script>
	<div class="demo">
		<input id="'.$idField.'" name="'.$idField.'" type="text" size="'.$size.'" value="'.$value.'" /></p>
	</div>';

	if($isDraw == true)
		echo $content;
	else
		return $content;
}

/*Создает рекламный слайдер
ПАРАМЕТРЫ:
	$params - массив рекламного контента;
	$isDraw - Выводить или вернять html-код.
РЕЗУЛЬТАТ:
	Рекламный блок с авто прокруткой*/
function shav_createTabbedRotator($params, $isDraw = false)
{
	if(!is_array($params) && $isDraw == true)
	{
		echo ERROR_ARRAYS_0100;
		return;
	}
	elseif(!is_array($params) && $isDraw == false)
		return ERROR_ARRAYS_0100;
	
	if(empty($params) && $isDraw == true)
	{
		echo MSG_ARRAYS_0002;
		return;
	}
	elseif(empty($params) && $isDraw == false)
		return MSG_ARRAYS_0002;

	$content  = '<div id="rotator">';
	$content .= '<ul class="ui-tabs-nav">';

	//Выводим все табы (кнопки)
	$i = 1;
	foreach($params['tabsArray'] as $tab)
	{
		if($i == 1)
			$content .= '<li class="ui-tabs-nav-item ui-tabs-selected" id="nav-fragment-'.$i.'"><a href="#fragment-'.$i.'"><span>'.$tab.'</span></a></li>';
		else
			$content .= '<li class="ui-tabs-nav-item" id="nav-fragment-'.$i.'"><a href="#fragment-'.$i.'"><span>'.$tab.'</span></a></li>';

		$i++;
	}
	$content .= '</ul>';

	//Выводим контент для всех табов
	$i = 1;
	foreach($params['contentsArray'] as $tabContent)
	{
		$content .= '<div id="fragment-'.$i.'" class="ui-tabs-panel" style="">';
		$content .= $tabContent;
		$content .= '</div>';

		$i++;
	}
	$content .= '</div>';

	if($isDraw == true)
		echo $content;
	else
		return $content;
}
?>